package com.javasm.mingming.login.controller;

import com.javasm.mingming.common.R;
import com.javasm.mingming.common.exception.JavasmException;
import com.javasm.mingming.common.exception.JavasmExceptionEnum;
import com.javasm.mingming.login.service.LoginService;
import com.javasm.mingming.webuser.entity.WebUser;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@RestController
@RequestMapping("/login")
public class LoginController {

    @Resource
    LoginService loginService;


    //根据页面已知参数，根据能提供的参数，根据页面需要的数据，决定返回值
    //写接口很难一次成功，肯定是多次完善才可以，所以需要尽可能的写一点测试一点
    //在经验不足的情况下，非常容易遗漏需求，后续补上就行，最终结果做对了就可以。
    //
    @PostMapping("/doUnameLogin")
    public R doUsernamePasswordLogin(String username,String password){
        if(StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){
            throw  new JavasmException(JavasmExceptionEnum.ParameterNull);
        }
        //写代码写这个页面不去想具体怎么实现这个功能，而是这个页面需要什么，提供了什么
        //应该想，在这个页面，这个interface应该给我什么，我能给他什么
        //不要一次性的把所有需求给想明白，一点一点的做出来
        WebUser webUser = loginService.doUnameLogin(username,password);
        //登录成功 返回用户信息
        return R.ok(webUser);
    }


        //注册功能
    @PostMapping("/doReg")
        public  R doRegister(@RequestBody WebUser webUser) {
        if(webUser == null){
            throw new JavasmException(JavasmExceptionEnum.ParameterNull);

        }
        //因为他是引用数据类型，物理地址是不变的，里边的值变化是没影响的
        loginService.doRegister(webUser);
        return R.ok(webUser);

    }
}
